package com.rockcent.action;

import com.rockcent.api.utils.NetworkTask;
import com.rockcent.model.AddressModel;
import com.rockcent.model.BClientCustomerBO;
import com.rockcent.model.CommentModel;
import com.rockcent.model.ContourMap;
import com.rockcent.model.CouponBO;
import com.rockcent.model.CouponModel;
import com.rockcent.model.CouponStore;
import com.rockcent.model.CustCouponOrderBO;
import com.rockcent.model.CustomerBO;
import com.rockcent.model.CustomerCouponBO;
import com.rockcent.model.CustomerIncomeBO;
import com.rockcent.model.DeliveryModel;
import com.rockcent.model.IndustryGroupModel;
import com.rockcent.model.MessageBO;
import com.rockcent.model.OrderInfo;
import com.rockcent.model.OrderModel;
import com.rockcent.model.SchoolModel;
import com.rockcent.model.Topics;
import com.rockcent.model.VerificationModel;
import com.rockcent.model.WalletModel;

import java.util.List;
import java.util.Map;

/**
 * Created by 黄东凯 on 2015/7/14.
 */
public interface AppAction {

    public void listCustomerCouponsForPage(String xyCustomerId, String searchKey, int currentPage, int pageSize, CallbackListener<List<CustomerCouponBO>> listener);

    public void queryIndustryGroup(CallbackListener<List<IndustryGroupModel>> listener);

    public void listHotCoupon(int pageSize, int currentPage, CallbackListener<List<CouponModel>> listener);

    public void editCoupon(String obj, CallbackListener<Boolean> listener);

    public void publishCoupon(String obj, CallbackListener<Integer> listener);

    public void upload(String file, String fileName, CallbackListener<String> listener);

    public void behavior(String topicId, String customerId, String behaviorType, CallbackListener<Void> listener);

    public void getVerificationDelivery(int verificationId, CallbackListener<DeliveryModel> listener);

    public void addFavorite(String loginName, int couponModelId, CallbackListener<Void> listener);

    public void addComment(String orderId, String loginName, int couponModelId, int score, String content, String isHidden, int verificationId, CallbackListener<Void> listener);

    public void endVerificationDelivery(int verificationId, CallbackListener<Void> listener);

    public void getTopics(int currentPage, int pageSize, String type, CallbackListener<List<Topics>> listener);

    public void getPositonBySchool(int schoolId, CallbackListener<AddressModel> listener);

    public void listComment(int couponModelId, int currentPage, int pageSize, CallbackListener<List<CommentModel>> listener);

    public void viewCouponModel(int couponModelId, String loginName, int channelId, CallbackListener<CouponModel> listener);

    public void getContour(CallbackListener<List<ContourMap>> listener);

    public void initPayPass(String loginName, String loginPassword, String payPassword, CallbackListener<Void> listener);

    public void resetLoginPassword(String loginName, String password, String code, CallbackListener<Void> listener);

    public void getCustomer(String loginName, String xyCustomerId, String customerId, CallbackListener<CustomerBO> listener);

    public void getBClientCustomer(String loginName, CallbackListener<BClientCustomerBO> listener);

    public void getSchool(CallbackListener<List<SchoolModel>> listener);

    public void registerByPhone(String phoneNum, String code, int schoolId, String password, CallbackListener<Void> listener);

    public void createCouponOrderNow(String loginName, int couponModelId, int count, int channelId, int plusModelId, CallbackListener<OrderInfo> listener);

    public void createQrCode(String loginName, int couponModelId, int count, int channelId, CallbackListener<VerificationModel> listener);

    public void getAddress(String loginName, CallbackListener<AddressModel> listener);

//    public void startVerificationDelivery(int verficationId, int provinceId, int cityId, int locationId, String address, String addressee, String remark, CallbackListener<String> listener);

    public void startVerificationDelivery(int verificatonId, int provinceId, String provinceName, int cityId, String cityName, int countyId, String countyName, String address, String addressee, String linkPhone, String remark, CallbackListener<String> listener);

    public void listCouponWallet(String loginName, String keyWords, int state, int type, int currentPage, int pageSize, CallbackListener<List<CouponModel>> listener);

    public void cancleOrder(String orderNumber, String loginName, CallbackListener<Void> listener);

    public void payByWallet(String orderNumber, String loginName, String payPass, CallbackListener<OrderInfo> listener);

    public void listOrder(String loginName, String keyWords, String state, int pageSize, int currentPage, CallbackListener<List<OrderModel>> listener);

    public void getCustomerWallet(String loginName, CallbackListener<WalletModel> listener);

    public void getSmsCode4Register(String phoneNum, CallbackListener<String> listener);

    public void sendSmsCode(String phoneNum, CallbackListener<Void> listener);

    public void sendSmsCode4ResetPassword(String phoneNum, CallbackListener<Void> listener);

    public void loginByApp(String loginName, String password, CallbackListener<Void> listener);

    public NetworkTask<List<CouponStore>> listCouponStore(int couponModelId, CallbackListener<List<CouponStore>> callbackListener);

    /*查询分类*/
    public NetworkTask<List<CouponBO>> listCouponModel(String keyword, int modelType, int listType, int industryId, int currentPage, int pageSize, int locationId, CallbackListener<List<CouponBO>> callbackListener);

    /*摇一摇礼包*/
    public NetworkTask<String> createCouponPackageOrder(String loginName, String couponPackageId, CallbackListener<String> callbackListener);

    public NetworkTask<OrderInfo> addFreeCoupon(int couponModelId, String loginName, int count, int channelId, CallbackListener<OrderInfo> callbackListener);

    public NetworkTask<List<CouponBO>> getTopicItemDetail(String topicId, CallbackListener<List<CouponBO>> callbackListener);

    /* 获取同学在售的商品服务列表 */
    public void listCustomerCoupons(String customerId, int currentPage, CallbackListener<List<CustomerCouponBO>> callbackListener);

    public void listRecommendCoupons(String customerId, CallbackListener<List<CustomerCouponBO>> callbackListener);

    public void viewCustomerCoupon(int id, CallbackListener<CustomerCouponBO> callbackListener);

    public void listMyReceiveCoupons(String customerId, int orderState, int currentPage, CallbackListener<List<CustCouponOrderBO>> callbackListener);

    public void listMyPublishedCoupons(String customerId, String state, int currentPage, CallbackListener<List<CustomerCouponBO>> callbackListener);

    public void activateCoupon(int couponId, CallbackListener<Boolean> callbackListener);

    public void inactivateCoupon(int couponId, CallbackListener<Boolean> callbackListener);

    public void listMyOrders(int type, String customerId, int currentPage, CallbackListener<List<CustCouponOrderBO>> callbackListener);

    public void confirmOrder(int orderId, CallbackListener<Boolean> callbackListener);

    public void cancelOrder(int orderId, String customerId, CallbackListener<Boolean> callbackListener);

    public void changeOrderPrice(String customerId, int orderId, double realPrice, CallbackListener<Boolean> callbackListener);

    //更新用户信息
    public NetworkTask<Boolean> updateCustomer(String obj, CallbackListener<Boolean> callbackListener);

    //检查用户是否存在
    public NetworkTask<CustomerBO> checkCustExist(String loginName, CallbackListener<CustomerBO> callbackListener);

    //检查用户是否存在
    public NetworkTask<Map<String, List<CouponModel>>> getPreferentialCoupon(String loginName, int cashModelId, int count, CallbackListener<Map<String, List<CouponModel>>> callbackListener);

    //C端券购买
    public NetworkTask<String> createCustomerOrder(String phone, String payPass, int couponId, int count, CallbackListener<String> callbackListener);

    //站内信
    public NetworkTask<List<MessageBO>> queryInmessage(String phone, int currentPage, int pageSize, String state, CallbackListener<List<MessageBO>> callbackListener);

    //计算总价格B端
    public NetworkTask<Map<String, Object>> calcPrice(String loginName, int buyModelId, int buyModelCnt, int usePlusModelId, CallbackListener<Map<String, Object>> callbackListener);

    //计算总价格c端
    public NetworkTask<Double> calcCustCouponPrice(int custCouponId, int count, CallbackListener<Double> callbackListener);

    //首页搜索
    public NetworkTask<List<CouponBO>> searchCoupon4Page(String xyCustomerId, String category, String searchKey, int currentPage, int pageSize, CallbackListener<List<CouponBO>> callbackListener);

    //查询收入
    public NetworkTask<CustomerIncomeBO> queryXyIncome(String customerId, CallbackListener<CustomerIncomeBO> callbackListener);

    //阅读站内信
    public NetworkTask<Void> readMessage(String loginName, int msgId, CallbackListener<Void> callbackListener);

    //实名验证
    public NetworkTask<Integer> realnameAuth(String loginName, String realname, String idnum, String idPicUrl, String idBackPicUrl, CallbackListener<Integer> callbackListener);

    //微信支付B端券获取预付ID
    public NetworkTask<String> payAppOrderByWX(String orderNumber, String mchId, String appId, CallbackListener<String> callbackListener);

    //支付宝购买C端券生成订单
    public NetworkTask<OrderInfo> createCustomerOrderByAliPay(String phone, int couponId, int count, CallbackListener<OrderInfo> callbackListener);

    //微信购买C端券生成订单
    public NetworkTask<OrderInfo> createCustomerOrderByWxPay(String phone, int couponId, int count, String appId, String mchId, CallbackListener<OrderInfo> callbackListener);

    //订单[支付中]
    public NetworkTask<Boolean> makeOrderToPaying(String orderId, CallbackListener<Boolean> callbackListener);
}
